//拼写单词
/*给你一份『词汇表』（字符串数组） words 和一张『字母表』（字符串） chars。

假如你可以用 chars 中的『字母』（字符）拼写出 words 中的某个『单词』（字符串），那么我们就认为你掌握了这个单词。

注意：每次拼写（指拼写词汇表中的一个单词）时，chars 中的每个字母都只能用一次。

返回词汇表 words 中你掌握的所有单词的 长度之和。
1 <= words.length <= 1000
1 <= words[i].length, chars.length <= 100
所有字符串中都仅包含小写英文字母
*/
bool is_character(char* arr, int* hash) {
    int size = strlen(arr);
    for (int i = 0; i < size; i++) {
        hash[arr[i] - 'a']--;
        if (hash[arr[i] - 'a'] < 0)
            return false;
    }
    return true;
}
int countCharacters(char** words, int wordsSize, char* chars) {
    int chars_size = strlen(chars);
    int hash[26] = {0};
    int count=0;
    for (int i = 0; i < chars_size; i++) {
        hash[chars[i] - 'a']++;
    }
    for (int i = 0; i < wordsSize; i++) {
        int new[26];
        for (int j = 0; j < 26; j++) {
            new[j] = hash[j];
        }
        if (is_character(words[i], new))
            count += strlen(words[i]);
    }
    return count;
}



//统计特殊字母的数量 I
/*给你一个字符串 word。如果 word 中同时存在某个字母的小写形式和大写形式，则称这个字母为 特殊字母 。

返回 word 中 特殊字母 的数量。
1 <= word.length <= 50
word 仅由小写和大写英文字母组成。
*/
int numberOfSpecialChars(char* word) {
    int hash[58] = {0};
    int size = strlen(word);
    for (int i = 0; i < size; i++) {
        hash[word[i] - 'A']++;
    }
    int count = 0;
    for (int i = 0; i < 26; i++) {
        if (hash[i] && hash[i + 32])
            count++;
    }
    return count;
}